#StopStroking @StopStroking
#LetTheEdgeFade
#Name...
@RT(What about a cock hero challenge ?,I think it's time to test your stamina with a cock hero challenge,Hmm... I want you to do now some cock hero challenge)
@NullResponse @CheckFlag(ST-HomeMadeCockHeroChallenge,Not The First Time)
But... @SetFlag(ST-HomeMadeCockHeroChallenge)
I won't play a cock hero video from yours but I'll generate one @RT(just,especially) for you from all the @RT(stuff,porn) you have 
Each round, I'll play clips from yours and I'll put a beat you have to follow with your strokes
The challenge for you is to go through all the rounds without cumming of course... but even without edging
If you can't help reaching the edge, you have to tell me
I let you have a break but there will be consequences... 
Well
You need to be comfortable before we start... cause this will be a hard challenge @Goto(Start)
(Not The First Time)
@NullResponse @Chance20(Too Tired)
I've already told you how I love making my own homemade cock hero challenge for you #EmoteRandom
And that is what I'm about to do right now #PetName @Goto(Start)
(Too Tired)
Well, I love making my own challenge for you generally #PetName
But I'm tired #GeneralTime
I'm just gonna pick one of yours and watch your struggle quietly #EmoteRandom 
Just let me look at your collection....
Hmmm... @InterruptsOff
(Not this)
@NullResponse @Wait(8)
@RT(Not this one,That one is too easy for you... I won't take it,Hmmm... let me look forward a bit more...,I will find one good I promise #Grin, Don't be so impatient #PetName)
@NullResponse @Chance70(Not this)
@RT(I've found what I was looking for !,This one is nice !,Ok I've choosen one,It's ok)
Are you ready #SubName ?
[yes,ready] @RT(Ok go,Ok let's go,Ok then good luck #PetName) @InterruptsOff
[no] @RT(I can wait... it's ok... just tell me when ready, just tell me when you're ready) @LoopAnswer
@DifferentAnswer #YesOrNo
@NullResponse @RapidCodeOn
@NullResponse @CameMode(Video,cummingCHvideo) 
@NullResponse @EdgeMode(Video,edgingCHvideo) 
@RT(Let's go !,Time to jerk off #PetName) @PlayVideoNoWait(CH) @JumpVideo(#Random(4,15))
@NullResponse @Wait(#Random(50,150))
@RT(That's it, you're not so bad I guess,Getting horny ?) #Laugh
@NullResponse @Wait(#Random(150,250))
@RT(I want this to be harder,Let's do a little jump in this cock hero challenge... Can you last #PetName ?,It will get #Hot... focus on your screen #PetName #Laugh)
@NullResponse @JumpVideoUp(#Random(10,20))
@NullResponse @Wait(#Random(100,200))
@RT(Don't cum #PetName !,Resist I don't want you shoot your load here #PetName, Come on #PetName... focus and stroke... but don't cum !)
@NullResponse @Wait(#Random(50,100))
@NullResponse @Goto(End of Challenge)
(Start)
Are you ready #SubName ?
[yes,ready] @RT(Ok go,Ok let's go,Ok then good luck #PetName) @InterruptsOff
[no] @RT(I can wait... it's ok... just tell me when ready, just tell me when you're ready) @LoopAnswer
@DifferentAnswer #YesOrNo
@NullResponse @RapidCodeOn
@NullResponse @CameMode(Goto,cummingCHvideo) 
@NullResponse @EdgeMode(Goto,edgingRoundCHvideo) 
@DommeLevel1 @NullResponse @SetVar[nbroundstotal]=[#Random(3,5)]
@DommeLevel2 @NullResponse @SetVar[nbroundstotal]=[#Random(4,6)]
@DommeLevel3 @NullResponse @SetVar[nbroundstotal]=[#Random(5,7)]
@DommeLevel4 @NullResponse @SetVar[nbroundstotal]=[#Random(6,8)]
@DommeLevel5 @NullResponse @SetVar[nbroundstotal]=[#Random(6,10)]
@NullResponse @SetVar[nbteases]=[0] 
@NullResponse @SetVar[nbpunishment]=[0]
@ShowVar[nbroundstotal] rounds to go @RTOn
(LoopHomeMadeCHVideo)
@NullResponse @ChangeVar[nbteases]=[nbteases]+[1]
@NullResponse @RapidCodeOn
@NullResponse @If[nbteases]=[nbroundstotal]Then(LastRoundHomeMadeCHVideo) 
@NullResponse @If[nbteases]=[1]Then(FirstRoundHomeMadeCHVideo)
#CH_NextRound 
@NullResponse @RapidCodeOn
@NullResponse #ShowBoobsOrButts @Wait(8)
@NullResponse #ShowBoobsOrButts @Wait(8) 
@NullResponse @ShowFemdomImage @Wait(6)
(FirstRoundHomeMadeCHVideo)
Round @ShowVar[nbteases]... @RT(Go,Stroke,Time to #JerkOff, Stroke stroke stroke, Fire on your #Cock, Go ! Break him down girls,That #Cock will suffer with these #Girls,, stroke it #PetName) !
@NullResponse @RapidCodeOn 
@NullResponse @If[nbteases]<[#Random(1,4)]Then(SoftTease) 
@NullResponse @If[nbteases]<[#Random(3,6)]Then(MediumTease)
@NullResponse @Goto(HardTease)
(SoftTease)
@NullResponse @SetVar[select_tease]=[#Random(1,6)]
@NullResponse @If[select_tease]=[6]Then(Level_3)
@NullResponse @If[select_tease]>=[4]Then(Level_2)
@NullResponse @If[select_tease]>=[1]Then(Level_1)
(MediumTease)
@NullResponse @SetVar[select_tease]=[#Random(1,6)]
@NullResponse @If[select_tease]>=[5]Then(Level_4)
@NullResponse @If[select_tease]>=[3]Then(Level_3)
@NullResponse @If[select_tease]=[2]Then(Level_2)
@NullResponse @If[select_tease]=[1]Then(Level_1)
(HardTease)
@NullResponse @SetVar[select_tease]=[#Random(1,6)]
@NullResponse @If[select_tease]>=[5]Then(Level_5)
@NullResponse @If[select_tease]>=[3]Then(Level_4)
@NullResponse @If[select_tease]=[2]Then(Level_3)
@NullResponse @If[select_tease]=[1]Then(Level_2)
(Level_1)
@NullResponse @RapidCodeOn
#CH_StartStroking_SoftCommand_lvl1
#CH_StartStroking_Taunt 
@NullResponse @Wait(#Random(10,30))
@NullResponse @RapidCodeOn
#CH_Faster_SoftCommand_lvl1
#CH_Faster_Taunt
@NullResponse @Wait(#Random(10,30)) 
@NullResponse @RapidCodeOn
#CH_Faster_SoftCommand_lvl2
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,30)) 
@NullResponse @ShowSoftcoreImage
@NullResponse @StopVideo 
Round @ShowVar[nbteases] @RT(done,finished,over,is ended) #SoundStopStroking @MetronomeOff
@NullResponse @Goto(LoopHomeMadeCHVideo)
(Level_2)
@NullResponse @RapidCodeOn
@NullResponse #CH_StartStroking_SoftCommand_lvl1
#CH_StartStroking_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,30))
@NullResponse #CH_Faster_SoftCommand_lvl2
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,40))
@NullResponse #CH_Faster_SoftCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(15,25)) 
@NullResponse @ShowSoftcoreImage 
@NullResponse @StopVideo
Round @ShowVar[nbteases] @RT(done,finished,over,is ended) #SoundStopStroking @MetronomeOff
@NullResponse @Goto(LoopHomeMadeCHVideo)
(Level_3)
@NullResponse @RapidCodeOn
@NullResponse #CH_StartStroking_SoftCommand_lvl2
#CH_StartStroking_Taunt
@NullResponse @Wait(#Random(15,25))
@NullResponse @RapidCodeOn
@NullResponse #CH_Faster_MediumCommand_lvl2
#CH_Faster_Taunt
@NullResponse @Wait(#Random(8,15))
@NullResponse @RapidCodeOn
@NullResponse #CH_Faster_MediumCommand_lvl1
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,15))
@NullResponse #CH_StartStroking_MediumCommand_lvl1
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(15,25))
@NullResponse #CH_Faster_HardCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,15))
@NullResponse #CH_StartStroking_SoftCommand_lvl3
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(20,30)) 
@NullResponse @ShowBlogImage
@NullResponse @StopVideo
Round @ShowVar[nbteases] @RT(done,finished,over,is ended) #SoundStopStroking @MetronomeOff
@NullResponse @Goto(LoopHomeMadeCHVideo)
(Level_4)
@NullResponse @RapidCodeOn
@NullResponse @SetVar[break]=[#Random(0,1)]
@NullResponse #CH_StartStroking_MediumCommand_lvl1
#CH_StartStroking_Taunt 
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(15,25))
@NullResponse #CH_Faster_HardCommand_lvl2
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,15))
@NullResponse #CH_Faster_HardCommand_lvl1
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,15))
@NullResponse #CH_Faster_HardCommand_lvl1
#CH_Faster_Taunt
@NullResponse @Wait(#Random(8,15))
@NullResponse #CH_StartStroking_HardCommand_lvl2
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,20))
@NullResponse #CH_Faster_HardCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,15))
@NullResponse @If[break]=[0]Then(level_4_no_break)
@NullResponse #CH_StartStroking_SoftCommand_lvl1
@RT(I feel you so close to the edge #PetName,Wow you are sensitive #PetName,This was hard on you #SubName I guess,Damn you're so horny,#EmoteRandom)... @RT(Calm down a minute,Just relax,Slow down a little,Keep cool) with this 
@NullResponse @Wait(#Random(15,25)) 
(level_4_no_break)
@NullResponse @RapidCodeOn
@NullResponse #CH_StartStroking_ExtremeCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(5,9)) 
@NullResponse @ShowBlogImage
@NullResponse @StopVideo
Round @ShowVar[nbteases] @RT(done,finished,over,is ended) #SoundStopStroking @MetronomeOff
@NullResponse @If[break]=[1]Then(level_4_break_end)
@RT(Are you horny #PetName ?,It was such a tease...,I guess your #Cock wants to cum badly right now,You're building up such pretty blue balls #PetName,Hmm... this round was lovely,#Contact3 would have loved this)
(level_4_break_end)
@NullResponse @Goto(LoopHomeMadeCHVideo)
(Level_5)
@NullResponse @RapidCodeOn
@NullResponse #CH_StartStroking_HardCommand_lvl1
#CH_StartStroking_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(15,25))
@NullResponse #CH_Faster_ExtremeCommand_lvl1
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(10,20))
@NullResponse #CH_Faster_ExtremeCommand_lvl2
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse #CH_StartStroking_HardCommand_lvl1
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse #CH_Faster_ExtremeCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse #CH_StartStroking_HardCommand_lvl1
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(15,25))
@NullResponse #CH_Faster_ExtremeCommand_lvl3
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeUp(#RandomRound10(10,30)) @PlayVideoNoWait(#VideoGenre_extreme) @JumpVideo(#Random(80,95))
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse @ShowFemdomImage
@NullResponse @StopVideo 
Round @ShowVar[nbteases] @RT(done,finished,over,is ended) #SoundStopStroking @MetronomeOff 
@RT(Are you horny #PetName ?,It was such a tease...,I guess your #Cock wants to cum badly right now,You're building up such pretty blue balls #PetName,Hmm... this round was lovely,#Contact3 would have loved this,#Contact3 would have seen you suffer during this round #EmoteHappy,Damn...that was hot,Fuck...that was sexy)
@NullResponse @Goto(LoopHomeMadeCHVideo)
(LastRoundHomeMadeCHVideo)
and @RT(now,then)... @RT(the most complicated,hardest,ultimate) @RT(sequence,scene,challenge)...
@NullResponse @CheckVideo(hardcore domme) @RTOff
(HARDCORE DOMME Videos Found)
Last round will be with me #PetName #Grin
@RT(Don't dare to,Don't) @RT(explode,cum) #PetName
@NullResponse @RapidCodeOn
@NullResponse @MetronomeOn(110) @PlayVideoNoWait(hardcore domme) @JumpVideo(#Random(10,30)) 
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeUp(#Random(40,80)) @JumpVideo(#Random(30,40))
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeDown(#Random(70,100)) @JumpVideo(#Random(50,60))
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(5,8))
@NullResponse @MetronomeUp(#Random(70,100))@JumpVideo(#Random(70,85)) 
#CH_Faster_Taunt
@NullResponse @Wait(#Random(12,16))
@NullResponse @StopVideo
@NullResponse @MetronomeOff
#StopStrokingEdge
@RT(You did well #PetName, I guess you're a hero with blue balls now #lol, I was hard on you #PetName right ? #Grin,Hmmm... I feel you want me so bad right now #PetName,You must be find me so #Sexy right now #Grin,I hope you didn't cum while I was enjoying some action #Grin) 
@NullResponse @Goto(EndSessionCHVideo)
(No HARDCORE DOMME Videos Found)
In these videos, some friends of mine will take care of you
Remember #PetName, @RT(don't dare to,don't) @RT(explode,cum,shoot your load) on them
@NullResponse @RapidCodeOn
@NullResponse @MetronomeOn(110) @PlayVideoNoWait(femdom) @JumpVideo(#Random(20,40))
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeUp(#Random(40,80)) @JumpVideo(#Random(50,70))
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeOn(100) @PlayVideoNoWait(femdom) @JumpVideo(#Random(20,40))
#CH_CalmDown_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(8,12))
@NullResponse @MetronomeUp(#RandomRound10(60,90)) @JumpVideo(#Random(50,70))
#CH_Faster_Taunt
@NullResponse @RapidCodeOn
@NullResponse @Wait(#Random(5,8))
@NullResponse @PlayVideoNoWait(hardcore) @JumpVideo(#Random(60,85))
@NullResponse @Wait(#Random(5,8))
@NullResponse @StopVideo
@NullResponse @MetronomeOff
(End of Challenge)
#StopStrokingEdge 
@RT(You did well #PetName, I guess you're a hero with blue balls now #lol, I was hard on you #PetName right ? #Grin, These #Girls were hard on you) @RTOff @Wait(5) 
(EndSessionCHVideo)
@NullResponse @RapidCodeOn
@NullResponse @EdgeMode(Normal) 
@NullResponse @CameMode(Normal)
@NullResponse @If[nbpunishment]>[0]Then(PunishmentForEdging)
Let's keep going on @InterruptsOn
@End
(edgingCHvideo)
Hmmm too bad, you haven't managed to reach the end @Chance60(Edging with CH)
It's ok cause you hold it back and... it wasn't so easy
But... you have to punish your #Cock 
Your #Cock has to learn to obey me when I tell you to hold it
Do you hear me nasty #Cock ? 
Punish it #SubName @CBTCock 
Good @Goto(EndSessionCHVideo)
(Edging with CH)
So that #Cock of yours like these cock hero videos....
Then you are going to edge on these as long as I want you to do so
@NullResponse @RapidCodeOn
@ApathyLevel1 @NullResponse @SetVar[nbedgingonCH]=[#Random(1,2)]
@ApathyLevel2 @NullResponse @SetVar[nbedgingonCH]=[#Random(2,3)]
@ApathyLevel3 @NullResponse @SetVar[nbedgingonCH]=[#Random(2,4)]
@ApathyLevel4 @NullResponse @SetVar[nbedgingonCH]=[#Random(2,5)]
@ApathyLevel5 @NullResponse @SetVar[nbedgingonCH]=[#Random(3,6)]
@NullResponse @SetVar[NbedgingDone]=[0]
(One More Edging with CH)
@NullResponse @If[nbedgingDone]=[nbedgingonCH]Then(End of Edging with CH)
@NullResponse @ChangeVar[NbedgingDone]=[NbedgingDone]+[1]
@RT(Follow this beat,Check this, You will love to be teased by this,Your #Cock is going to #Love it more and more,Focus on this new cock hero video) .. and @RT(remember,don't forget) to @RT(warn,tell) me when you @RT(hit,reach) the #EdgeNoun @EdgeMode(Video,One More Edging with CH)
@NullResponse @PlayVideo(CH) @JumpVideo(5,35)
@RT(No edge on this one ?, Oh so you haven't reach the #EdgeNoun on this one, I guess this cock hero video wasn't #Hot enough to make you edge) @ChangeVar[NbedgingDone]=[NbedgingDone]-[1]
@RT(Let's try again #Grin,Too bad you have to restart ! #Laugh,This one won't count,, I want you to edge so I will continue until you do it) @Goto(One More Edging with CH)
(End of Edging with CH)
Good, I guess your #Cock has had its due 
@NullResponse @Goto(EndSessionCHVideo)
(edgingRoundCHvideo)
Stop #SoundStopStroking @MetronomeOff 
@NullResponse @RapidCodeOn
@NullResponse @StopVideo
@NullResponse @CheckFlag(AlreadyPunishment)
Hmmm too bad, you haven't managed to reach the end of this round
It's ok cause you hold it back and... it wasn't so easy 
But... you'll have to pay me later for this @TempFlag(AlreadyPunishment)
(AlreadyPunishment)
I add one punishment to your account @ChangeVar[nbpunishment]=[nbpunishment]+[1] 
Your @RT(total,number) of punishments is @ShowVar[nbpunishment] @RT(now,at this time)
@NullResponse @RapidCodeOn
@NullResponse @CameMode(Goto,cummingCHvideo) 
@NullResponse @EdgeMode(Goto,edgingRoundCHvideo) 
@NullResponse @If[nbteases]=[nbroundstotal]Then(PunishmentForEdging)
@NullResponse @Goto(LoopHomeMadeCHVideo)
(PunishmentForEdging)
@NullResponse @EdgeMode(Normal)
@NullResponse @DeleteFlag(AlreadyPunishment)
@NullResponse @If[nbpunishment]=[1]Then(PunishmentLast)
I owe you @ShowVar[nbpunishment] punishments #PetName #Grin @TempFlag(severalpunishments)
So ... your first punishment is going to be about... @Goto(Cock Punishment,Balls Punishment,Edging burst Punishment)
(Cock Punishment)
Cock torture ! #Laugh @CBTCock
@NullResponse @Goto(NextPunishment)
(Balls Punishment)
Balls torture ! #Laugh @CBTBalls
@NullResponse @Goto(NextPunishment)
(Edging burst Punishment)
Edging and edging and edging again ! #Laugh @Goto(Femdom edging burst,Domme edging burst)
(Femdom edging burst)
@RT(That #Girl,This friend of mine) wants you right on the #EdgeNoun @ShowSoftcoreImage @LockImages
@RT(Follow her command,Obey her) #PetName ! #SoundEdge @Edge @MultipleEdges(#Random(3,6),8)
@NullResponse @UnlockImages @Goto(NextPunishment)
(Domme edging burst)
@RT(Stare at,Look at) me #PetName, I want to @RT(get,drive) you completely @RT(mad,crazy) @LockImages
@DomTag(Glaring) Edge for me #PetName ! #SoundEdge @Edge @MultipleEdges(#Random(3,6),8)
@NullResponse @UnlockImages @Goto(NextPunishment)
(NextPunishment)
@NullResponse @ChangeVar[nbpunishment]=[nbpunishment]-[1]
@NullResponse @If[nbpunishment]=[1]Then(PunishmentLast)
@NullResponse @If[nbpunishment]=[0]Then(PunishmentEnd)
@ShowVar[nbpunishment] punishments left
@RT(Your next punishment is going to be about..., I want now to punish you with...., I know you want to be punish now with...) @Goto(Cock Punishment,Balls Punishment,Edging burst Punishment)
(PunishmentLast)
@NotFlag(severalpunishments) You owe one punishement and this will be about .... @Goto(Cock Punishment,Balls Punishment,Edging burst Punishment)
@Flag(severalpunishments) You last punishement will be about .... @Goto(Cock Punishment,Balls Punishment,Edging burst Punishment) @DeleteFlag(severalpunishments)
(PunishmentEnd)
Good #PetName
Next time, try not to edge on my cock hero videos @FollowUp40(I know it's not easy #Laugh)
@NullResponse @Goto(EndSessionCHVideo)
(cummingCHVideo)
#SubName, what a mess... @StopStroking
I've told you not to cum @InterruptsOn
You are such a @RT(pathetic loser,weak man) @SetFlag(CH_Failed)
I leave @Wait(3) 
@EndTease
@End
@Info Domme generates a homemade cock hero video with your clips. Version 4 of the script with punishments if you edge. Written by Swit69.